import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;

import com.lowagie.text.Chunk;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Element;
import com.lowagie.text.Font;
import com.lowagie.text.PageSize;
import com.lowagie.text.Paragraph;
import com.lowagie.text.Phrase;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfPCell;
import com.lowagie.text.pdf.PdfPRow;
import com.lowagie.text.pdf.PdfPTable;
import com.lowagie.text.pdf.PdfWriter;

/**
 * 惠州市现代渔业示范基地建设项目申报书
 * @author zhangmz
 */
public class ModernFisheryDeclarationPDF {
	
	/**
	 * 第一页
	 * @param doc 	doc 内容
	 * @param bank_par  换行
	 * @param titleFont 标题字体设置
	 * @param font		内容字体设置
	 * @param date		日期
	 * @param sdf		日期格式
	 * @throws DocumentException
	 * @throws IOException
	 */
	@SuppressWarnings({  "static-access", "unchecked" })
	private static void page1(Document doc,Paragraph bank_par,Font titleFont,Font font,Date date,SimpleDateFormat sdf) throws DocumentException, IOException{
		doc.add(bank_par);
		
		Paragraph titleP = new Paragraph("惠州市现代渔业示范基地建设\n项目申报书\n\n",
				titleFont);
		titleP.setAlignment(titleP.ALIGN_CENTER);
		doc.add(titleP);
		
		PdfPTable table = new PdfPTable(4);
		table.setHorizontalAlignment(Element.ALIGN_CENTER);
		table.getDefaultCell().setVerticalAlignment(Element.ALIGN_MIDDLE);
		table.setWidthPercentage(70);
		int width[] = {20,20,9,12};//设置每列宽度比例   
		table.setWidths(width);  
		
		table.addCell(new Paragraph("项目名称：", font));
		PdfPCell cell = new PdfPCell(new Paragraph("测试项目名称啊啊啊啊啊啊啊", font));
		cell.setColspan(3);
		table.addCell(cell);
		
		table.addCell(new Paragraph("起止时间：", font));
		cell = new PdfPCell(new Paragraph(sdf.format(date).toString(), font));
		cell.setColspan(3);
		table.addCell(cell);
		
		table.addCell(new Paragraph("申报单位：", font));
		cell = new PdfPCell(new Paragraph("XXXXX渔业公司", font));
		cell.setColspan(3);
		table.addCell(cell);
		
		table.addCell(new Paragraph("项目主管单位：", font));
		cell = new PdfPCell(new Paragraph("县级主管单位", font));
		cell.setColspan(3);
		table.addCell(cell);
		
		table.addCell(new Paragraph("单位法人：", font));
		cell = new PdfPCell(new Paragraph("张三", font));
		cell.setColspan(3);
		table.addCell(cell);
		
		table.addCell(new Paragraph("项目负责人：", font));
		cell = new PdfPCell(new Paragraph("李四", font));
		cell.setColspan(3);
		table.addCell(cell);
		
		table.addCell(new Paragraph("联系电话：", font));
		cell = new PdfPCell(new Paragraph("18888888888", font));
		cell.setColspan(3);
		table.addCell(cell);
		
		table.addCell(new Paragraph("通讯地址：", font));
		cell = new PdfPCell(new Paragraph("惠州市惠城区云山西路凯宾斯基C座718", font));
		cell.setColspan(3);
		table.addCell(cell);
		
		for (PdfPRow row : (ArrayList<PdfPRow>) table.getRows()) {
			for (PdfPCell cells : row.getCells()) {
				if (cells != null) {
					cells.setPadding(8.0f);
					cells.setBorderWidth(0);
				}
			}
		}
		doc.add(table);
		//空白 四行
		doc.add(bank_par);
		
		BaseFont bf_booder = BaseFont.createFont("STSong-Light",
				"UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
		Font bf_booderFont = new Font(bf_booder, 18, Font.NORMAL);
		Paragraph FirstPage_booder = new Paragraph("惠州市海洋与渔业局 \n"
				+ sdf.format(date) + " 年制\n\n", bf_booderFont);
		FirstPage_booder.setAlignment(FirstPage_booder.ALIGN_CENTER);
		doc.add(FirstPage_booder);
	}
	/**
	 * 第二页
	 * @param doc
	 * @param bfTitle
	 * @param font
	 * @throws DocumentException
	 */
	private static void page2(Document doc,Font font,Font Sec_titleFont) throws DocumentException{
		doc.newPage();
		
		Chunk chunk = new Chunk("\n\n\n",Sec_titleFont);
		Phrase phrase = new Paragraph(30);//设置行间距 
		phrase.add(chunk);
		
		chunk = new Chunk("1.填报说明\n ",Sec_titleFont);
		
		phrase.add(chunk);
		chunk = new Chunk("  项目申报书一式3份，项目申报单位按此格式用A4纸打印上报。\n",font);
		phrase.add(chunk);
		
		chunk = new Chunk("2.封面\n",Sec_titleFont);
		phrase.add(chunk);
		
		chunk = new Chunk("  项目单位为惠州市现代渔业示范基地建设申报单位。\n",font);
		phrase.add(chunk);
		
		chunk = new Chunk("3.现有工作基础\n",Sec_titleFont);
		phrase.add(chunk);
		
		chunk = new Chunk("  包括拟建示范基地规模，发展现状和趋势、产品市场销售状况、示范基地建设地点、范围、交通条件、生产环境、项目单位基本情况、技术人员构成及示范基地项目负责人简介等。\n",font);
		phrase.add(chunk);
		
		chunk = new Chunk("4.项目内容和目标\n",Sec_titleFont);
		phrase.add(chunk);
		
		chunk = new Chunk("  包括示范基地建设的内容、辐射带动的面积、带动的农户，产品的质量水平，预期经济效益和社会效益等。\n",font);
		phrase.add(chunk);
		
		chunk = new Chunk("5.建设期限和实施的进度安排\n",Sec_titleFont);
		phrase.add(chunk);
		
		chunk = new Chunk("  原则上按一年建设期限，一年后进行验收。\n",font);
		phrase.add(chunk);
		
		chunk = new Chunk("6.项目组织管理和保障措施\n",Sec_titleFont);
		phrase.add(chunk);
		
		chunk = new Chunk("  项目单位为保证完成项目在组织管理、技术保障、资金投入和使用管理等方面的具体保障措施。\n",font);
		phrase.add(chunk);
		
		doc.add(phrase);
	}
	/**
	 * 第三頁
	 * 可以重复调用
	 * @param doc
	 * @param font
	 * @param Sec_titleFont
	 * @throws DocumentException
	 * 
	 */
	private static void page3(Document doc,Font font,Font Sec_titleFont,String title,String content) throws DocumentException{
		doc.newPage();
				
		PdfPTable table = new PdfPTable(1);          
		table.setWidthPercentage(100);
		table.setSplitLate(false);
		String oneStr = content;
		PdfPCell cell =  new PdfPCell(new Paragraph(title,Sec_titleFont));
		cell.setMinimumHeight(30);
		//设置上下左右边框样式
		cell.setBorderWidthTop(1);
		cell.setBorderWidthLeft(1);
		cell.setBorderWidthRight(1);
		cell.setBorderWidthBottom(0);
		
		table.addCell(cell);
		
		cell = new PdfPCell(new Paragraph(oneStr,font));
        cell.setMinimumHeight(700);
        cell.setBorderWidth(1);
        cell.setBorderWidthTop(0);
        table.addCell(cell);
		
        doc.add(table);
	}
	
	private static void page4(Document doc,Font Sec_titleFont,Font font) throws DocumentException{
		doc.newPage();
		Paragraph par = new Paragraph("");
		doc.add(par);
		
		PdfPTable table = new PdfPTable(4);          
		table.setWidthPercentage(100);
		table.setSplitLate(false);
		table.setSpacingBefore(200);
		table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER);
		PdfPCell cell;
		
		cell =  new PdfPCell(new Paragraph("七、项目经费预算（万元）",Sec_titleFont));
		cell.setMinimumHeight(30);
		cell.setColspan(4);
		table.addCell(cell);
		
		table.addCell(new Paragraph("项目",font));
		table.addCell(new Paragraph("金额(万元)",font));
		cell =  new PdfPCell(new Paragraph("用途说明",font));
		cell.setColspan(2);
		cell.setHorizontalAlignment(Element.ALIGN_CENTER);
		table.addCell(cell);
		
		for (int i = 0; i < 5; i++) {
			table.addCell(new Paragraph(" ",font));
			table.addCell(new Paragraph(" ",font));
			cell =  new PdfPCell(new Paragraph(" ",font));
			cell.setColspan(2);
			cell.setHorizontalAlignment(Element.ALIGN_CENTER);
			table.addCell(cell);
		}
		
//		table.addCell(new Paragraph("资金构成(万元)",font));
		cell = new PdfPCell(new Paragraph("资金构成(万元)",font));
		cell.setRowspan(2);
		table.addCell(cell);
		
		table.addCell(new Paragraph("申请市级补助",font));
		table.addCell(new Paragraph("单位自筹",font));
		table.addCell(new Paragraph("合计",font));
		//设置值
//		table.addCell(new Paragraph("构成(万元)",font));
		table.addCell(new Paragraph("1111111",font));
		table.addCell(new Paragraph("2222222",font));
		table.addCell(new Paragraph("3333333",font));
		
		int i = 0;
		for (PdfPRow row : (ArrayList<PdfPRow>) table.getRows()) {
			if(i==0){
				i++;
				continue;
			}
			for (PdfPCell cells : row.getCells()) {
				
				if (cells != null) {
					cells.setPadding(8.0f);
					cells.setBorderWidth(1);
					cells.setHorizontalAlignment(Element.ALIGN_CENTER);
					cells.setVerticalAlignment(Element.ALIGN_MIDDLE);
				}
			}
		}
		
		doc.add(table);
	}
	
	private static void page5(Document doc,Font Sec_titleFont,Font font) throws DocumentException{
		PdfPTable table = new PdfPTable(5);     
		table.setSpacingAfter(100);
		table.setSpacingBefore(50);
		table.setWidthPercentage(100);
		table.setSplitLate(false);
		table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER);
		PdfPCell cell =  new PdfPCell(new Paragraph("八、项目负责人员构成表",Sec_titleFont));
		cell.setMinimumHeight(30);
		cell.setColspan(5);
		table.addCell(cell);
		
		table.addCell(new Paragraph("姓 名",font));
		table.addCell(new Paragraph("性 别",font));
		table.addCell(new Paragraph("专  业",font));
		table.addCell(new Paragraph("职务/职称",font));
		table.addCell(new Paragraph("主要任务",font));
		
		for (int i = 0; i < 5; i++) {
			table.addCell(new Paragraph(" ",font));
			table.addCell(new Paragraph(" ",font));
			table.addCell(new Paragraph(" ",font));
			table.addCell(new Paragraph(" ",font));
			table.addCell(new Paragraph(" ",font));
		}
		
		int i = 0;
		for (PdfPRow row : (ArrayList<PdfPRow>) table.getRows()) {
			if(i==0){
				i++;
				continue;
			}
			for (PdfPCell cells : row.getCells()) {
				
				if (cells != null) {
					cells.setPadding(8.0f);
					cells.setBorderWidth(1);
					cells.setHorizontalAlignment(Element.ALIGN_CENTER);
					cells.setVerticalAlignment(Element.ALIGN_MIDDLE);
				}
			}
		}
		
		doc.add(table);
	}
	
	private static void page6(Document doc,Font Sec_titleFont,Font font,String title) throws DocumentException{
		PdfPTable table = new PdfPTable(1);     
		table.setSpacingAfter(20);
		table.setWidthPercentage(100);
		table.setSplitLate(false);
		table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER);
		PdfPCell cell =  new PdfPCell(new Paragraph(title,Sec_titleFont));
		cell.setMinimumHeight(30);
		cell.setColspan(5);
		cell.setBorderWidthBottom(0);
		table.addCell(cell);
		
		//内容
		cell = new PdfPCell(new Paragraph(" ",font));
		cell.setMinimumHeight(100);
		cell.setBorderWidthBottom(0);
		cell.setBorderWidthTop(0);
		table.addCell(cell);
		
		cell = new PdfPCell(new Paragraph("（单位盖章）\n\n  年     月     日	 ",font));
		cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
		cell.setBorderWidthTop(0);
		table.addCell(cell);
		
		doc.add(table);
	}
	
	/**
	 * 主方法
	 * @throws DocumentException
	 * @throws IOException
	 */
	public static void createPDF() throws DocumentException, IOException{
		Date date = new Date();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
		Document doc = new Document(PageSize.A4);
		PdfWriter.getInstance(doc, new FileOutputStream("d:\\惠州市现代渔业示范基地建设项目申报书.pdf"));
		// 文档标题
		doc.addTitle("惠州市现代渔业示范基地建设申报书");
		/*System.out.println(content.getItemValueAsString("项目名称"));*/
		// 文档主题
		doc.addSubject("惠州市现代渔业示范基地建设申报书");
		// 文档作者
		doc.addAuthor("zmz");
		// 文档创建人
		doc.addCreator("zmz");
		// 关键字
		doc.addKeywords("惠州市现代渔业示范基地建设申报书");
		doc.open();
		//标题字体设置
		BaseFont bfTitle = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",
				BaseFont.NOT_EMBEDDED);
		Font titleFont = new Font(bfTitle, 26, Font.BOLD);
		//内容字体
		BaseFont bfComic = BaseFont.createFont("C:\\Windows\\Fonts\\SIMSUN.TTC,1", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
		Font font = new Font(bfComic, 14, Font.NORMAL);
		Paragraph bank_par = new Paragraph("\n\n\n\n", font);
		//小标题
		Font Sec_titleFont = new Font(bfTitle, 18, Font.BOLD);
		//第一页
		page1(doc, bank_par, titleFont, font, date, sdf);
		//第二页
		page2(doc,font,Sec_titleFont);
		//示范基地建设的目的意义
		page3(doc,font,Sec_titleFont,"一、 示范基地建设的目的意义","111111111111111111111111111111111111111");
		//现有工作基础
		page3(doc,font,Sec_titleFont,"二、 现有工作基础","2222222222222222222222222222");
		//项目内容和目标
		page3(doc,font,Sec_titleFont,"三、项目内容和目标","333333333333333333333333333");
		//主要技术措施
		page3(doc,font,Sec_titleFont,"四、主要技术措施","4444444444444444444444444444444444");
		//建设期限和实施的进度安排
		page3(doc,font,Sec_titleFont,"五、建设期限和实施的进度安排","5555555555555555555555555555555555555");
		//项目组织管理和保障措施
		page3(doc,font,Sec_titleFont,"六、项目组织管理和保障措施","6666666666666666666666666666666666666");
		// 项目经费预算（万元）
		page4(doc,Sec_titleFont,font);
		// 项目负责人员构成表
		page5(doc,Sec_titleFont,font);
		
		doc.newPage();
		
		//九、县区海洋与渔业主管部门意见：
		page6(doc,Sec_titleFont,font,"九、县区海洋与渔业主管部门意见：");
		//十、县区财政部门意见：
		page6(doc,Sec_titleFont,font,"十、县区财政部门意见：");
		//十一、市海洋与渔业局意见：
		page6(doc,Sec_titleFont,font,"十一、市海洋与渔业局意见：");
		//十二、市财政局意见：
		page6(doc,Sec_titleFont,font,"十二、市财政局意见：");
		
		doc.close();
	}
	
	public static void main(String[] args) {
		try {
			createPDF();
		} catch (DocumentException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
